package com.dbsop.request;


import com.dbsop.domain.params.*;

import java.util.List;

public interface ClientRequest {


    /**
     * 保存
     * @return
     */
    <T> int save(SaveParams<T> saveParams);


    /**
     * 查询记录
     * @param requestParams
     * @param <T>
     * @return
     */
     <T> List<T> selectList(RequestParams<T> requestParams);




    /**
     * 批量保存
     * @param saveParams
     * @param <T>
     * @return
     */
     <T> int saveBatch(SaveParams<T> saveParams);

    /**
     * 修改条件
     * @param modifyParams
     * @return
     */
     int updateByQuery(ModifyParams modifyParams);

    /**
     * 删除条件
     * @param deleteParams
     * @return
     */
     int deleteBySearch(DeleteParams deleteParams);


    /**
     * 分组查询
     * @param aggRequestParams
     * @param <T>
     * @return
     */
     <T> List<T> selectListAgg(AggRequestParams<T> aggRequestParams);

    /**
     * 排名查询
     * @param eCollapseParams
     * @param <E>
     * @return
     */
     <E> List<E> collapseList(CollapseParams<E> eCollapseParams);

    /**
     * 分页查询
     * @param ePageParams
     * @param <E>
     * @return
     */
     <E> ESPage<E> selectPageList(PageParams<E> ePageParams);
}
